package com.lyf.design.practice.theory.structure.proxy.staticproxy.v0;

/**
 * 需求：
 * 需要进行actionable中的方法进行拓展
 *
 * 比如加打印日志、加记录时间、检查参数等额外需求
 *
 * 若采用拓展（继承的方式实现），
 * 只单独拓展某个（单维度）功能，那还可适当接受，
 * 但是当进行多维度进行拓展，那会类爆炸，还是需要采用组合原则进行设计---
 *
 * @author LYF
 * @date 2022/6/22
 */
abstract public class AbstractPerson implements Actionable{
    private String name;
    private Integer age;
    private String job;//工作

    public AbstractPerson(String name, Integer age, String job) {
        this.name = name;
        this.age = age;
        this.job = job;
    }

    @Override
    public void talk() {
        System.out.println(name+":person talking...");
    }

    @Override
    public void run() {
        System.out.println(name+":person running...");
    }

    @Override
    public void eat() {
        System.out.println(name+":person eating food...");
    }
    abstract void work();

}
